1. Field of the Invention
The invention generally relates to measuring signal-to-noise ratio (SNR) at an input of a Viterbi decoder and to systems with adaptive decoding of convolutional codes where current SNR value is taken into account.
2. Description of the Related Art
Convolutional coding is widely used in satellite data transmission channels, for example, in data transmission channels of the radio navigation satellite systems (Global Navigation Satellite Systems (GNSS): GPS L5, GPS L2C, Galileo), as well as in other communications systems to transmit differential GNSS corrections from geosynchronous orbit satellites (WAAS, EGNOS).
There are several decoders for convolutional codes that apply Viterbi decoding algorithm (see, for example, U.S. Pat. Nos. 4,802,174; 4,905,317; 5,432,803; 5,390,198; 3,872,432; 4,240,156; 4,493,082; 4,500,994).
Several techniques concerned with decoding using the Viterbi algorithm are disclosed in the following U.S. patents. In particular, the synchronization technique in such a decoder is disclosed in detail in U.S. Pat. No. 3,872,432. The soft decision technique is described in U.S. Pat. Nos. 4,240,156 and 4,493,082. The multi-rate branch metric processor using the soft decision technique is also disclosed in U.S. Pat. No. 4,500,994.
These devices lack the capability of generating current input SNR values.
U.S. Pat. No. 4,802,174 describes an apparatus for decoding convolutional codes comprising serially-connected a branch metrics calculation unit, a path metrics and path memory unit, decoded symbol generation unit, and minimal path metrics memory, path metrics and path memory connected to the path metrics and path memory unit, the decoder input being the input of branch metrics calculation unit, and the output of decoded symbol generation unit is the output.
In the known implementations of Viterbi decoders the following operations are performed.
At the beginning of the decoding branch metrics matrix, minimal path metrics matrix, path metrics matrix and path matrix are filled with initial values for example, all zeros).
Decoding itself is implemented by performing the following operations at each decoding step:
(a) receiving a symbols packet from communication channel;
(b) calculating branch metrics matrix;
(c) calculating path metrics matrix;
(d) calculating paths matrix which in its rows contains paths stored during the operation of Viterbi algorithm;
(e) calculating a minimal path metrics matrix;
(f) generating a decoded symbol;
(g) receiving and processing next packet of the symbols from communication channel if packet is available, otherwise finish the decoding.
Conventional Viterbi decoders can be implemented as the following units connected in series:
(i) a branch metrics calculation unit,
(ii) a path metrics and paths calculation unit, and
(iii) a decoded symbol generation unit.
The following units are connected to the path metrics and paths calculation unit:
(i) a minimal path metrics memory,
(ii) a path metrics memory, and
(iii) a paths memory.
The decoder input is the input of the branch metrics calculation unit and the output of the decoder is the output of decoded symbol generation unit.
However, there is a need for a system and method that provide a possibility for estimating current SNR value at the input of the decoder.